Para o projeto foram analisadas algumas técnicas e tecnologias para viabilizar
as especificações. Nesse capítulo serão abordadas as tecnologias escolhidas.

\section{Construção da Ontologia}
A Ontologia, segundo a filosofia grega antiga, é o estudo da natureza do ser, da
sua existência e dos seus relacionamentos. Ela estuda o que existe ou que pode
ser considerado como existente, como os seres se agrupam, quais as suas divisões e hierarquias e
como se relacionam.

O termo foi adotado pela área de Inteligência Artificial para a representação
do conhecimento sobre um domínio específico, que concorda com a idéia
criada pelos filósofos.


\section{Processamento de Linguagem Natural}

O processamento de linguagem natural é a principal proposta desse trabalho para
a retirada de informações sobre as partidas de futebol. Assim, são mostradas
algumas técnicas de processamento de linguagem natural junto com as ferramentas
utilizadas no projeto.

\subsection{Análise Léxica}
O objetivo do analisador léxico é quebrar as partes do texto em
pedaços (chamados de \textit{tokens}) para poder classificá-los.

\subsubsection{\emph{Tokenizador} e Etiquetador Gramatical (\emph{POS Tagger})}
A primeira fase do processamento é a quebra de um texto em \emph{tokens},
realizada pelo \emph{tokenizador}. Os \emph{tokens} são unidades de texto que
tem um sentido, ou seja, um item lexical, como uma palavra, um numeral ou uma
pontuaćão.

O desafio da geração de \emph{tokens} não apenas a separaćão das palavras
em que há espaços ou em que há pontuações, mas o \emph{tokenizador} precisa
interpretar uma unidade lexical para que o etiquetador ou \emph{tagger} marque
com a \emph{tag}. A \emph{tag} contém alguma classificação do \emph{token} e, no
caso de um etiquetador gramatical, a \emph{tag} tem o signicado morfológico de
tal.

Podemos ver essa dificuldade no caso das abreviações como `S.P.' para `São
Paulo', em que os pontos não são pontos finais, mas pontos de abreviação.
Outro caso é os numerais que usam pontos por questão estética, como o número
`333.456', que é um \emph{token} completo ao invés de ser três tokens `333', `.'
e `456'.

Além disso, temos o problema de identificação de \emph{tokens} em verbos e suas
reduções. No caso do verbo \emph{vencer} há variações de tempo e pessoa, como
\emph{venceram}, \emph{venceu} e \emph{vence}; o que poderia ser reduzido ao
lexema \emph{venc} para uma melhor análise.

Para o projeto foi utilizado um etiquetador gramatical chamando \emph{TreeTagger} 
produzido pela Universidade de Stuttgart. Ele usa um recurso de
Inteligência Artificial chamado `árvore de decisão' para o aprendizado e para a
classificação do \emph{token}, tendo a dupla funcionalidade de
\emph{tokenizador} e etiquetador.

Foi utilizado um treinamento do \emph{TreeTagger} realizado por Pablo Gamallo
Otera da Universidade de Santiago de Compostela com um \emph{corpus} da língua
portuguesa. As \emph{tags} usadas no treinamento são referenciadas no Anexo A.

\subsubsection{Gazetteer - Listas de referências}
As listas ajudam o analisador léxico a classificar os \emph{tokens} por
palavras já definidas. O \emph{Gazetteer} é um dicionário com informações sobre
lugares e nomes, cuja utilidade foi grande em mapas na
antiguidade. No contexto de processamento de linguagem natural, o
\emph{Gazetteer} é uma lista de referências sobre qualquer assunto.

Para ajudar na analise léxica, o \emph{token} é comparado com os elementos de
cada lista e, estando presente nela, o \emph{token} é etiquetado com o valor
correspondente.

Exemplo de uma lista de times de futebol:

Palmeiras

São Paulo

Corinthians

Santos


\subsection{Análise Sintática}
A análise sintática reconhece uma sequência
de palavras que formam um frase e constrói uma árvore de derivação, que mostra
as relações entre as palavras que compoem essa frase.

Para isso, é preciso um analisador sintático ou
\emph{parser} que tenha acesso aos \emph{tokens} produzidos pelo analisador
léxico e uma gramática que contenha as regras de formação das frases.

As gramáticas são classificadas em quatro \cite{CHOMSKY1959}, segundo Noam
Chomsky (1959):

\begin{itemize}
\item \textbf{Regular:} gramática restrita cujas regras de formação só
permitem geração à esquerda;
\item \textbf{Livre de contexto:} gramática que permite regras de geração em
ambos os sentidos por ter um auto-recursivo central;
\item \textbf{Sensível ao contexto:} gramática que consegue expressar-se
dependendo do seu contexto, e a expressão não pode sofre nenhuma redução;
\item \textbf{Irrestrita:} gramática sem restrições, sem nenhuma
limitação imposta.
\end{itemize}

Para a simplicidade do projeto foi usada apenas uma gramática livre de
contexto. Sendo (F) a frase que é composta pelo sintagma nominal (SN), que é o
participante de uma ação ou argumento dos verbos; e um sintagma verbal (SV),
que são as partes da frase iniciadas pelo verbo, temos a seguinte regra de
formação:

F $\Rightarrow$ SN SV

SN $\Rightarrow$ Substantivo

SN $\Rightarrow$ Verbo SN

Com essa regra, o analisador sintático percorre a lista de \emph{tokens} e
procura as relações segundo a sua abordagem.

\subsection{Semântica e Pragmática}
A Semântica tem como objetivo estudar o significado das palavras e
das estruturas; a Pragmática, estudar como o significado
das expressões pode variar no seu contexto.

A semântica estuda a suas palavras e o desafio dos vários significados que elas
podem ter, como \emph{jogador}, que pode ser \emph{jogador de futebol},
\emph{jogador de vôlei} ou \emph{jogador de pôquer}. Outras formas de
ambiguidade podem ser vistas na construção sintática.

Para o projeto, o escopo do assunto foi delimitado para partidas
de futebol do Campeonanto Paulista de 2008. Assim, o trabalho de interpretação
fica simplificado para a extração e a busca de informações.


\section{Agentes}
Os agentes consistem em programas cujo comportamento é \textbf{racional}. Por
racional, compreende-se que o agente agirá de forma a atingir o melhor
resultado possível. No tópico de inteligência artificial, podemos dividir o
software de acordo com duas divisões: quanto ao pensamento e quanto à forma de
agir. \cite{NORVIG2002}. Conforme a abordagem atual, decidimos,
para a busca, utilizar um agente que age racionalmente, em contraste a um
agente que pense, humana ou racionalmente, ou aja humanamente.

Decidimos esta abordagem em virtude do pensamento não ser devidamente
demonstrado e a ação humana não ser necessariamente a melhor a ser tomada.
Portanto, decidimos pela \emph{ação racional}, que é a melhor possível, em
função do ambiente a ser examinado e cursos de ação a serem tomados.

Pela complexidade de nosso trabalho, escolhemos utilizar um \emph{agente
reativo} para realizar as buscas. Em função das buscas estarem em um conjunto
restrito, acreditamos que esta arquitetura seja o bastante, principalmente
porque o universo em questão, as palavras da busca, é completamente observável,
e o conjunto de possibilidades não é tão difícil de ser coberto.

\subsection{Agente reativo}
O agente reativo é um agente racional \cite{NORVIG2002}, cujo comportamento é um
pouco mais rico que o do agente orientado a tabelas, que verifica a entrada e tem necessidade
de que \emph{cada combinação} seja prevista. Mesmo em um universo limitado
como o do Campeonato Paulista de 2008, há um grande número de combinações
possíveis, o que torna essa abordagem impraticável.

Com relação aos agentes que levam em conta o histórico e o estado atual,
decidimos que essa abordagem seria mais complexa que o realmente necessário.
A justificativa para isso é de que grande parte das buscas não haverá
necessidade de refinamento em virtude do tipo que será feito, conforme os
resultados de jogos específicos.

O comportamento do agente reativo, ao contrário do agente orientado
a tabelas, pode ser determinado em função de algumas abstrações. Em nosso caso,
temos o interesse em retornar confrontos, como no caso de entradas de dois
times. Com a entrada de mais times, são retornados os possíveis confrontos, ou
seja, as combinações dois a dois entre os mesmos. Se a entrada for um ou mais
estádios, são retornados os confrontos realizados nos mesmos. São apenas
exemplos, mas isso mostra que é uma abordagem viável e abrangente ao mesmo
tempo.


\subsection{Mecanismos de busca}
Os mecanismos de busca atuais consistem em sistemas com três partes
principais a saber: \cite{LEVENE2005}
\begin{itemize}
  \item \emph{Web crawling}
  \item Indexação
  \item Busca
\end{itemize}

O \emph{Web crawling} consiste em um programa que acessa continuamente links de
páginas, analisando-as e obtendo as informações que serão enviadas para a
indexação, que é a montagem de uma estrutura de dados com rápido acesso a uma
grande quantidade de informação - obtida pelo \emph{Web crawling}. A busca ocorre quando o usuário entra com termos a serem
localizados em uma caixa de texto, esta em uma página web, que tem o papel de
ser a interface do mecanismo de busca com o usuário. 

Com relação ao nosso sistema, que inclui um módulo de busca, podemos dizer
que é semelhante na medida em que temos um índice, que são as partidas e seus
dados armazenados no banco de dados, sendo feita uma busca com base no agente
reativo.

%comentário: parágrafo apagável
A \emph{web crawling}, do ponto de vista de rastreamento de páginas na
Internet, está fora do escopo de nosso projeto. Pode ser uma extensão
possível, principalmente para se fazer um sistema que acompanhe um campeonato
em andamento, ou mesmo para armazenar dados de campeonatos que já aconteceram e
de atuais.

Por outro lado, as informações reunidas e a indexação das mesmas é um
processo bem semelhante ao que nosso sistema realiza na extração de
informações que são armazenadas em um banco de dados. Podemos, portanto,
concluir que nosso sistema exerce o papel de um mecanismo de busca.
